<?php

require_once '../util/Util.php';

class AccesoDB {
	
	// Datos de conexion
	const SERVER = "localhost";
	const USER = "root";
	const PASS = "";
	const DATABASE = "proyectosphp";
	
	// Implementacion del patron Singleton
	private static $instancia = null;
	public static function getInstancia(){
		 if( self::$instancia == null ){
			   self::$instancia = new AccesoDB();
		 }
		 return self::$instancia;
	}
	
	// Variable que representa la conexion con el servidor
	private $cn = null;
	
	// Metodo privado que retorna la conexion con el servidor
	private function getConnection(){
		if($this->cn == null){
			try{
				 $this->cn = mysql_connect(self::SERVER, self::USER, self::PASS);
				 if(mysql_errno() != 0){
					  throw new Exception("No se tiene acceso al servidor.");
				 }
				 mysql_select_db(self::DATABASE, $this->cn);
				 if(mysql_errno($this->cn) != 0){
					 throw new Exception("Base de datos no existe.");
				 }
			}catch(Exception $e){
				throw $e;
			}
		}//fin primer if
		return $this->cn;
	}
	
	// Ejecuta una consulta y retorna el resultado como un arreglo
	public function executeQuery($query){
		try{
			 $cn = $this->getConnection();
			 $rs = mysql_query($query, $cn);
			 if( mysql_errno($cn) ){
				  throw new Exception(mysql_error($cn));
			 }
			 $lista = array();
			 while($row = mysql_fetch_assoc($rs)){
				  $lista[] = $row;
			 }
			 mysql_free_result($rs);
			 return $lista;
		}catch(Exception $e){
			Util::save_log($e, $query);
			throw $e;
		}
	}
	
	// Ejecuta una insercion
	public function executeInsert($query){
		try{
			 $cn = $this->getConnection();
			 $confirmacion = mysql_query($query, $cn);
			 $idgen = mysql_insert_id();
			 if( mysql_errno($cn) ){
				 throw new Exception(mysql_error($cn));
			 }
			 return $idgen;
		}catch(Exception $e ){
			Util::save_log($e, $query);
			throw $e;
		}
	}
	
	
}
?>